//============================================================================================
/**
 * @file	zkn2_list.h
 * @brief	金銀図鑑画面 リスト作成関連
 * @author	Hiroyuki Nakamura
 * @date	08.08.26
 */
//============================================================================================
#ifndef	ZKN2_LIST_H
#define	ZKN2_LIST_H


//============================================================================================
//	定数定義
//============================================================================================

// ポケモン登録状況
enum{
	ZKN2LIST_REGTYPE_NONE = 0,		// わからない
	ZKN2LIST_REGTYPE_SEE,			// 見つけた
	ZKN2LIST_REGTYPE_GET,			// 捕まえた
};

// ポケモンリストソート
enum{
	ZKN2LIST_SORT_NORMAL = 0,		// ポケモンナンバー
	ZKN2LIST_SORT_GOZYUUON,			// 五十音
	ZKN2LIST_SORT_GRAM_L,			// 重い
	ZKN2LIST_SORT_GRAM_S,			// 軽い
	ZKN2LIST_SORT_HIGH_L,			// 高い
	ZKN2LSIT_SOTT_HIGH_S,			// 低い
};

// ポケモン検索マスク
// 名前
enum{
	ZKN2LIST_SEARCH_NAME_NONE = 44,
	ZKN2LIST_SEARCH_NAME_MAX
};

// タイプ
enum{
	ZKN2LIST_SEARCH_TYPE_NORMAL = 0,
	ZKN2LIST_SEARCH_TYPE_BATTLE,
	ZKN2LIST_SEARCH_TYPE_HIKOU,
	ZKN2LIST_SEARCH_TYPE_POISON,
	ZKN2LIST_SEARCH_TYPE_JIMEN,
	ZKN2LIST_SEARCH_TYPE_IWA,
	ZKN2LIST_SEARCH_TYPE_MUSHI,
	ZKN2LIST_SEARCH_TYPE_GHOST,
	ZKN2LIST_SEARCH_TYPE_METAL,
	ZKN2LIST_SEARCH_TYPE_FIRE,
	ZKN2LIST_SEARCH_TYPE_WATER,
	ZKN2LIST_SEARCH_TYPE_KUSA,
	ZKN2LIST_SEARCH_TYPE_ELECTRIC,
	ZKN2LIST_SEARCH_TYPE_SP,
	ZKN2LIST_SEARCH_TYPE_KOORI,
	ZKN2LIST_SEARCH_TYPE_DRAGON,
	ZKN2LIST_SEARCH_TYPE_AKU,
	ZKN2LIST_SEARCH_TYPE_NONE,
};

// 形
enum{
	ZKN2LIST_SEARCH_FORM_CIRCLE = 0,
	ZKN2LIST_SEARCH_FORM_ARM,
	ZKN2LIST_SEARCH_FORM_LEGS,
	ZKN2LIST_SEARCH_FORM_MANY_LEGS,
	ZKN2LIST_SEARCH_FORM_FOUR_WING,
	ZKN2LIST_SEARCH_FORM_HARABAI,
	ZKN2LIST_SEARCH_FORM_STRAIGHT,
	ZKN2LIST_SEARCH_FORM_FOUR_LEGS,
	ZKN2LIST_SEARCH_FORM_COMP,
	ZKN2LIST_SEARCH_FORM_HAITSUKUBARI,
	ZKN2LIST_SEARCH_FORM_WATER,
	ZKN2LIST_SEARCH_FORM_TAIL,
	ZKN2LIST_SEARCH_FORM_TWO_WING,
	ZKN2LIST_SEARCH_FORM_TWO_LEGS,
	ZKN2LIST_SEARCH_FORM_NONE,
};

// 地域
#define	ZKN2LIST_SEARCH_AREA_MASK_JHOTO	( 1 )	// ジョウト
#define	ZKN2LIST_SEARCH_AREA_MASK_KANTO	( 2 )	// カントー
#define	ZKN2LIST_SEARCH_AREA_MASK_ETC	( 4 )	// その他（不明）
#define	ZKN2LIST_SEARCH_AREA_MASK_NONE	( 8 )	// 指定なし

#define	ZKN2LIST_SEARCH_HEIGHT_MAX		( 999 )		// 高さ最大値
#define	ZKN2LIST_SEARCH_WEIGHT_MAX		( 9999 )	// 重さ最大値

// 検索パラメータデフォルト値
#define ZKN2LIST_SEARCH_DEF_SORT	( ZKN2LIST_SORT_NORMAL )
#define ZKN2LIST_SEARCH_DEF_NAME	( ZKN2LIST_SEARCH_NAME_NONE )
#define ZKN2LIST_SEARCH_DEF_TYPE	( ZKN2LIST_SEARCH_TYPE_NONE )
#define ZKN2LIST_SEARCH_DEF_AREA	( 3 )
#define ZKN2LIST_SEARCH_DEF_FORM	( ZKN2LIST_SEARCH_FORM_NONE )


//============================================================================================
//	プロトタイプ宣言
//============================================================================================

//--------------------------------------------------------------------------------------------
/**
 *	ポケモンリストテーブル作成
 *
 *	@param	wk			図鑑画面ワーク
 *	@param	mode		図鑑モード
 *	@param	sort		ソートタイプ
 *	@param	name		名前検索タイプ
 *	@param	type1		タイプ１検索タイプ
 *	@param	type2		タイプ２検索タイプ
 *	@param	hLow		高さ（低）
 *	@param	hHi			高さ（高）
 *	@param	wLow		重さ（低）
 *	@param	wHi			重さ（高）
 *	@param	area		地域
 *	@param	form		形検索タイプ
 *
 *	@retval	"TRUE = 作成成功"
 *	@retval	"FALSE = 作成結果リストが０個"
 *
 *	zkn_glbdata.c の ZKN_GLBDATA_PokeListTblMake_DummyListCutFlg() を参考
 */
//--------------------------------------------------------------------------------------------
extern BOOL ZKN2LIST_MonsListTblMake(
				ZKN2_WORK * wk,
				u32 mode,
				u32 sort,
				u32 name,
				u32 type1,
				u32 type2,
				u32	hLow,
				u32	hHi,
				u32	wLow,
				u32	wHi,
				u32	area,
				u32 form );

//--------------------------------------------------------------------------------------------
/**
 * 選択位置のを取得
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	選択位置
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2LIST_SelPosGet( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 選択位置のポケモンを取得
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	初期位置のポケモン
 */
//--------------------------------------------------------------------------------------------
extern u16 ZKN2LIST_SelMonsGet( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 *	初期位置のポケモンの存在をチェック
 *
 *	@param	list		リストデータ
 *	@param	mons		初期位置のポケモン
 *
 *	@return	初期位置のポケモン
 */
//--------------------------------------------------------------------------------------------
extern u16 ZKN2LIST_StartMonsCheck( ZKN2_LIST * list, u16 mons );

//--------------------------------------------------------------------------------------------
/**
 * リストページ表示用データ作成
 *
 * @param	wk			図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2LIST_ListPutMake( ZKN2_WORK * wk, BOOL space );

//--------------------------------------------------------------------------------------------
/**
 * 確認したポケモンの最後の図鑑番号を取得
 *
 * @param	wk			図鑑画面ワーク
 *
 * @return	最後の図鑑番号
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2LIST_ListMaxGet( ZKN2_WORK * wk, BOOL space );

//--------------------------------------------------------------------------------------------
/**
 * リストページのスクロール最大値を取得
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	スクロール最大値
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2LIST_ListScrollMaxGet( ZKN2_WORK * wk, BOOL space );


#endif	// ZKN2_LIST_H